/******************************************************************************* * Copyright (c) 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation ******************************************************************************/ package org.eclipse.ui.internal.testing; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.ui.IPluginContribution; import org.eclipse.ui.internal.decorators.DecoratorDefinition; import org.eclipse.ui.internal.dialogs.WizardCollectionElement; import org.eclipse.ui.internal.dialogs.WorkbenchWizardElement; import org.eclipse.ui.internal.preferences.WorkbenchPreferenceExpressionNode; import org.eclipse.ui.internal.progress.JobInfo; import org.eclipse.ui.internal.registry.ActionSetDescriptor; import org.eclipse.ui.internal.registry.Category; import org.eclipse.ui.internal.registry.EditorDescriptor; import org.eclipse.ui.internal.registry.PerspectiveDescriptor; import org.eclipse.ui.internal.registry.ViewDescriptor; import org.eclipse.ui.internal.themes.ColorDefinition; import org.eclipse.ui.internal.themes.ThemeElementCategory; import org.eclipse.ui.testing.ContributionInfo; import org.eclipse.ui.views.IViewCategory; import org.osgi.framework.Bundle; import org.osgi.framework.FrameworkUtil; /** * @since 3.6 * */ public class PluginContributionAdapterFactory implements IAdapterFactory { public Object getAdapter(Object adaptableObject, Class adapterType) { if (adapterType != ContributionInfo.class) { return null; } if (adaptableObject instanceof IPluginContribution) { IPluginContribution contribution = (IPluginContribution) adaptableObject; String elementType; // RAP [if]: need session aware messages if (contribution instanceof EditorDescriptor) { // elementType = ContributionInfoMessages.ContributionInfo_Editor; elementType = ContributionInfoMessages.get().ContributionInfo_Editor; } else if (contribution instanceof ViewDescriptor) { // elementType = ContributionInfoMessages.ContributionInfo_View; elementType = ContributionInfoMessages.get().ContributionInfo_View; } else if (contribution instanceof ActionSetDescriptor) { // elementType = ContributionInfoMessages.ContributionInfo_ActionSet; elementType = ContributionInfoMessages.get().ContributionInfo_ActionSet; } else if (contribution instanceof Category) { // elementType = ContributionInfoMessages.ContributionInfo_Category; elementType = ContributionInfoMessages.get().ContributionInfo_Category; } else if (contribution instanceof IViewCategory) { // elementType = ContributionInfoMessages.ContributionInfo_Category; elementType = ContributionInfoMessages.get().ContributionInfo_Category; } else if (contribution instanceof ThemeElementCategory) { // elementType = ContributionInfoMessages.ContributionInfo_Category; elementType = ContributionInfoMessages.get().ContributionInfo_Category; } else if (contribution instanceof WizardCollectionElement) { // elementType = ContributionInfoMessages.ContributionInfo_Category; elementType = ContributionInfoMessages.get().ContributionInfo_Category; } else if (contribution instanceof ColorDefinition) { // elementType = ContributionInfoMessages.ContributionInfo_ColorDefinition; elementType = ContributionInfoMessages.get().ContributionInfo_ColorDefinition; } else if (contribution instanceof WorkbenchWizardElement) { // elementType = ContributionInfoMessages.ContributionInfo_Wizard; elementType = ContributionInfoMessages.get().ContributionInfo_Wizard; } else if (contribution instanceof PerspectiveDescriptor) { // elementType = ContributionInfoMessages.ContributionInfo_Perspective; elementType = ContributionInfoMessages.get().ContributionInfo_Perspective; } else if (contribution instanceof WorkbenchPreferenceExpressionNode) { // elementType = ContributionInfoMessages.ContributionInfo_Page; elementType = ContributionInfoMessages.get().ContributionInfo_Page; } else if (contribution instanceof DecoratorDefinition) { // elementType = ContributionInfoMessages.ContributionInfo_LabelDecoration; elementType = ContributionInfoMessages.get().ContributionInfo_LabelDecoration; } else { // elementType = ContributionInfoMessages.ContributionInfo_Unknown; elementType = ContributionInfoMessages.get().ContributionInfo_Unknown; } return new ContributionInfo(contribution.getPluginId(), elementType, null); } if (adaptableObject instanceof JobInfo) { JobInfo jobInfo = (JobInfo) adaptableObject; Job job = jobInfo.getJob(); if (job != null) { Bundle bundle = FrameworkUtil.getBundle(job.getClass()); if (bundle != null) { // return new ContributionInfo(bundle.getSymbolicName(), // ContributionInfoMessages.ContributionInfo_Job, null); return new ContributionInfo(bundle.getSymbolicName(), ContributionInfoMessages.get().ContributionInfo_Job, null); } } } return null; } public Class[] getAdapterList() { return new Class[] { ContributionInfo.class }; } }